package com.atguigu.servlet;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

/**
 * servlet的生命周期
 * 1.执行Servlet构造器方法
 * 2.执行init初始方法
 * 第一、二步，是在第一次访问的时候创建servlet程序会调用
 * 3.执行service方法（每次访问都会调用）
 * 4.执行destroy销毁方法（在web工程停止的时候进行调用）
 *
 * @author Mc.Chai
 * @program: JavaWeb
 * @create 2021-12-04-15:12 15:12
 */
public class HelloServlet implements Servlet {

    public HelloServlet() {
        System.out.println("构造器方法");
    }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        
        System.out.println("初始化方法");
//        1.可以获取Servlet程序的别名<servlet-name>的值
        System.out.println("Servlet程序的别名 = " + servletConfig.getServletName());
//        2.获取初始化参数init-param,getInitParameter("对应的键")
        System.out.println("初始化参数username的值是 = " + servletConfig.getInitParameter("username"));
        System.out.println("url = " + servletConfig.getInitParameter("url"));

//        3.获取ServletContext对象
        System.out.println(servletConfig.getServletContext());
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    /**
     * service方法是专门用来处理请求和响应的
     * 执行该java文件就会执行service()方法
     * */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        /**
         * 获取请求的方式,分别执行相应的代码
         * */
        //向上转型获取getMethod()用来获取当前请求的方式
        HttpServletRequest httpServletRequest=(HttpServletRequest) servletRequest;
        String type=httpServletRequest.getMethod();
        //注意大写GET\POST
        if (type.equals("GET")){
            doGet();
        }else if(type.equals("POST")){
            doPost();
        }

    }
    /**get请求所执行的操作代码*/
    public void doGet(){
        System.out.println("get请求");
        System.out.println("get请求");
    }
    /**post请求所执行的操作代码*/
    public void doPost(){
        System.out.println("post请求");
        System.out.println("post请求");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {
        System.out.println("销毁方法");
    }
}
